When the HVM guest is used with vcpu=5, the hypervisor may report:
"redir 10 not set for 180 EOI", and the HVM guest is Hung.
When the hypervisor with a vcpu context delivers to another vcpu,
EOI might be sent before ISR is set.
We should modify to call viosapic_delver() after ISR setting.
Signed-off-by: Tsunehisa Doi <Doi.Tsunehisa@jp.fujitsu.com>
Signed-off-by: Tomonari Horikoshi <t.horikoshi@jp.fujitsu.com>
while ( (irq = iosapic_get_highest_irq(viosapic)) != -1 )
{
- viosapic_deliver(viosapic, irq);
-
if ( viosapic->redirtbl[irq].trig_mode == SAPIC_LEVEL )
viosapic->isr |= (1UL << irq);
+ viosapic_deliver(viosapic, irq);
+
viosapic->irr &= ~(1UL << irq);
}
}